# -*- coding: UTF-8 -*- #
"""
-------真正的勇士， 敢于直面惨淡的Warning、 敢于正视淋漓的Error-----
@author : 贾鹏博
@file : 22、基于PO模式的测试框架优化实战.py
@time : 2022/6/11 22:27
"""
import pytest

"""
异常处理
日志记录
报告生成
测试数据的数据驱动
"""


# 一、定义黑名单列表 ， 处理弹框
def balck_wrapper(fun):
    def run(*args, **kwargs):
        basepage = args[0]
        try:
            return fun(*args, **kwargs)
        except Exception as e:
            for balck in basepage.balck_list:
                eles = basepage.driver.find_element(*balck)
                if len(eles) > 0:
                    eles[0].click()
                    return fun(*args, **kwargs)
                raise e
        return run


@balck_wrapper
def find(self, by, locator):
    return self.deiver.find_element(by, locator)


# 二、封装 screenshot() 截图方法 ， 出现异常时调用截图
def screenshot(self, path):
    self.driver.save_screenshot(path)

# 三、添加日志，截图

# 四、数据驱动 ： 减少代码冗余，集中管理测试数据，便于维护
# @pytest.mark.parametrize('参数1，参数2', [('参数1-值1'), ('参数2-值2')])
